package fmtPrint

import (
	"fmt"
)

var brand = "MacBook"

type computer struct {
	name   string
	price  int
	config []string
	brand  *string
}

func FmtPrint() string {

	c := computer{
		name:   "apple",
		price:  10000,
		config: []string{"i7 9700k", "DDR4 32G", "32", "520G"},
		brand:  &brand,
	}
	/**
		%v 是个通用的占位符。它会自动将变量转换为默认格式的字符串，这在打印字符串或数字等原语时非常有用，而且不需要特定的选项
		%#v 根据go语法打印。尤其在打印 struct和切片时特别直观
	**/
	fmt.Printf("我的电脑配置是：\n\n %v \n\n", c)
	fmt.Printf("我的电脑配置是：\n\n %#v \n\n", c)
	fmt.Print("hello world")
	fmt.Println("hello world")

	// 功能同上面三个函数，只不过将转换结果写入到 w 中。
	// func Fprint(w io.Writer, a ...interface{}) (n int, err error)
	// func Fprintln(w io.Writer, a ...interface{}) (n int, err error)
	// func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)

	// 功能同上面三个函数，只不过将转换结果以字符串形式返回。
	// func Sprint(a ...interface{}) string
	// func Sprintln(a ...interface{}) string
	// func Sprintf(format string, a ...interface{}) string

	return fmt.Sprintf("我的电脑配置是：\n\n %#v \n\n", c)
}
